{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Exact GP Regression on Classification Labels\n",
    "\n",
    "In this notebok, we demonstrate how one can convert classification problems into regression problems by performing fixed noise regression on the classification labels. \n",
    "\n",
    "We follow the method of [Dirichlet-based Gaussian Processes for Large-Scale Calibrated Classification](https://papers.nips.cc/paper/2018/file/b6617980ce90f637e68c3ebe8b9be745-Paper.pdf) who transform classification targets into regression ones by using an approximate likelihood."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[pyKeOps]: Warning, no cuda detected. Switching to cpu only.\n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "import torch\n",
    "import numpy as np\n",
    "import gpytorch\n",
    "from matplotlib import pyplot as plt\n",
    "\n",
    "%matplotlib inline\n",
    "%load_ext autoreload\n",
    "%autoreload 2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generate Data\n",
    "\n",
    "Firs, we will generate 500 data points from a smooth underlying latent function and have the inputs be iid Gaussian.\n",
    "The decision boundaries are given by rounding a latent function:\n",
    "\n",
    "$f(x,y) = \\sin(0.15 \\pi u + (x + y)) + 1,$ where $u \\sim \\text{Unif}(0,1).$\n",
    "Then, $y = \\text{round}(f(x,y)).$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def gen_data(num_data, seed = 2019):\n",
    "    torch.random.manual_seed(seed)\n",
    "    \n",
    "    x = torch.randn(num_data,1)\n",
    "    y = torch.randn(num_data,1)\n",
    "    \n",
    "    u = torch.rand(1)\n",
    "    data_fn = lambda x, y: 1 * torch.sin(0.15 * u * 3.1415 * (x + y)) + 1\n",
    "    latent_fn = data_fn(x, y)\n",
    "    z = torch.round(latent_fn).long().squeeze()\n",
    "    return torch.cat((x,y),dim=1), z, data_fn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_x, train_y, genfn = gen_data(500)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7fe103195850>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(train_x[:,0].numpy(), train_x[:,1].numpy(), c = train_y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The below plots illustrate the decision boundary. We will predict the class logits and ultimately the predictions across $[-3, 3]^2$ for illustration; this region contains both interpolation and extrapolation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_d1 = np.linspace(-3, 3, 20)\n",
    "test_d2 = np.linspace(-3, 3, 20)\n",
    "\n",
    "test_x_mat, test_y_mat = np.meshgrid(test_d1, test_d2)\n",
    "test_x_mat, test_y_mat = torch.Tensor(test_x_mat), torch.Tensor(test_y_mat)\n",
    "\n",
    "test_x = torch.cat((test_x_mat.view(-1,1), test_y_mat.view(-1,1)),dim=1)\n",
    "test_labels = torch.round(genfn(test_x_mat, test_y_mat))\n",
    "test_y = test_labels.view(-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.contour.QuadContourSet at 0x7fe1034378d0>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.contourf(test_x_mat.numpy(), test_y_mat.numpy(), test_labels.numpy())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Setting Up the Model\n",
    "\n",
    "The Dirichlet GP model is an exact GP model with a couple of caveats. First, it uses a special likelihood: a DirichletClassificationLikelihood, and second, it is natively a multi-output model (for each data point, we need to predict `num_classes`, $C$, outputs) so we need to specify the batch shape for our mean and covariance functions.\n",
    "\n",
    "The DirichletClassificationLikelhood is just a special type of `FixedGaussianNoiseLikelihood` that does the required data transformations into a regression problem for us. Succinctly, we soft one hot encode the labels into $C$ outputs so that $\\alpha_i = \\alpha_\\epsilon$ if $y_c=0$ and $\\alpha_i = 1 + \\alpha_\\epsilon$ if $y_c=1.$\n",
    "Then, our variances are $\\sigma^2 = \\log(1./\\alpha + 1.)$ and our targets are $\\log(\\alpha) - 0.5 \\sigma^2.$\n",
    "\n",
    "That is, rather than a classification problem, we have a regression problem with $C$ outputs.\n",
    "For more details, please see the original paper."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "from gpytorch.models import ExactGP\n",
    "from gpytorch.likelihoods import DirichletClassificationLikelihood\n",
    "from gpytorch.means import ConstantMean\n",
    "from gpytorch.kernels import ScaleKernel, RBFKernel"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# We will use the simplest form of GP model, exact inference\n",
    "class DirichletGPModel(ExactGP):\n",
    "    def __init__(self, train_x, train_y, likelihood, num_classes):\n",
    "        super(DirichletGPModel, self).__init__(train_x, train_y, likelihood)\n",
    "        self.mean_module = ConstantMean(batch_shape=torch.Size((num_classes,)))\n",
    "        self.covar_module = ScaleKernel(\n",
    "            RBFKernel(batch_shape=torch.Size((num_classes,))),\n",
    "            batch_shape=torch.Size((num_classes,)),\n",
    "        )\n",
    "    \n",
    "    def forward(self, x):\n",
    "        mean_x = self.mean_module(x)\n",
    "        covar_x = self.covar_module(x)\n",
    "        return gpytorch.distributions.MultivariateNormal(mean_x, covar_x)\n",
    "\n",
    "# initialize likelihood and model\n",
    "# we let the DirichletClassificationLikelihood compute the targets for us\n",
    "likelihood = DirichletClassificationLikelihood(train_y, learn_additional_noise=True)\n",
    "model = DirichletGPModel(train_x, likelihood.transformed_targets, likelihood, num_classes=likelihood.num_classes)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we train and fit the model as we would any other GPyTorch model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Iter 1/50 - Loss: 6.431   lengthscale: 0.693   noise: 0.693\n",
      "Iter 6/50 - Loss: 5.934   lengthscale: 0.939   noise: 0.475\n",
      "Iter 11/50 - Loss: 5.749   lengthscale: 1.056   noise: 0.322\n",
      "Iter 16/50 - Loss: 5.591   lengthscale: 1.014   noise: 0.220\n",
      "Iter 21/50 - Loss: 5.484   lengthscale: 0.906   noise: 0.153\n",
      "Iter 26/50 - Loss: 5.391   lengthscale: 0.803   noise: 0.109\n",
      "Iter 31/50 - Loss: 5.320   lengthscale: 0.722   noise: 0.080\n",
      "Iter 36/50 - Loss: 5.282   lengthscale: 0.669   noise: 0.060\n",
      "Iter 41/50 - Loss: 5.258   lengthscale: 0.632   noise: 0.047\n",
      "Iter 46/50 - Loss: 5.237   lengthscale: 0.614   noise: 0.037\n"
     ]
    }
   ],
   "source": [
    "# this is for running the notebook in our testing framework\n",
    "import os\n",
    "smoke_test = ('CI' in os.environ)\n",
    "training_iter = 2 if smoke_test else 50\n",
    "\n",
    "\n",
    "# Find optimal model hyperparameters\n",
    "model.train()\n",
    "likelihood.train()\n",
    "\n",
    "# Use the adam optimizer\n",
    "optimizer = torch.optim.Adam(model.parameters(), lr=0.1)  # Includes GaussianLikelihood parameters\n",
    "\n",
    "# \"Loss\" for GPs - the marginal log likelihood\n",
    "mll = gpytorch.mlls.ExactMarginalLogLikelihood(likelihood, model)\n",
    "\n",
    "for i in range(training_iter):\n",
    "    # Zero gradients from previous iteration\n",
    "    optimizer.zero_grad()\n",
    "    # Output from model\n",
    "    output = model(train_x)\n",
    "    # Calc loss and backprop gradients\n",
    "    loss = -mll(output, likelihood.transformed_targets).sum()\n",
    "    loss.backward()\n",
    "    if i % 5 == 0:\n",
    "        print('Iter %d/%d - Loss: %.3f   lengthscale: %.3f   noise: %.3f' % (\n",
    "            i + 1, training_iter, loss.item(),\n",
    "            model.covar_module.base_kernel.lengthscale.mean().item(),\n",
    "            model.likelihood.second_noise_covar.noise.mean().item()\n",
    "        ))\n",
    "    optimizer.step()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Model Predictions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.eval()\n",
    "likelihood.eval()\n",
    "\n",
    "with gpytorch.settings.fast_pred_var(), torch.no_grad():\n",
    "    test_dist = model(test_x)\n",
    "    \n",
    "    pred_means = test_dist.loc"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We've predicted the logits for each class in the classification problem, and can clearly see that the logits for class 0 are highest in the bottom left, the logits for class 2 are highest in the top right, and the logits for class 1 are highest in the middle."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(1, 3, figsize = (15, 5))\n",
    "\n",
    "for i in range(3):\n",
    "    im = ax[i].contourf(\n",
    "        test_x_mat.numpy(), test_y_mat.numpy(), pred_means[i].numpy().reshape((20,20))\n",
    "    )\n",
    "    fig.colorbar(im, ax=ax[i])\n",
    "    ax[i].set_title(\"Logits: Class \" + str(i), fontsize = 20)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Unfortunately, we can't get closed form estimates of the probabilities; however, we can approximate them with a lightweight sampling step using $J$ samples from the posterior as:\n",
    "$$\\mathbb{E}(p(y_i = j)) = \\int \\frac{\\exp\\{f_i^*\\}}{\\sum_k^C \\exp\\{f_i^*\\}} p(f^* | y) df^* \\approx \\frac{1}{J} \\sum_j^J \\frac{\\exp\\{f_{i,j}^*\\}}{\\sum_k^C \\exp\\{f_{i,j}^*\\}}$$\n",
    "\n",
    "Here, we draw $256$ samples from the posterior."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/wesleymaddox/anaconda3/lib/python3.7/site-packages/gpytorch/utils/cholesky.py:51: NumericalWarning: A not p.d., added jitter of 1.0e-05 to the diagonal\n",
      "  warnings.warn(f\"A not p.d., added jitter of {jitter_new:.1e} to the diagonal\", NumericalWarning)\n"
     ]
    }
   ],
   "source": [
    "pred_samples = test_dist.sample(torch.Size((256,))).exp()\n",
    "probabilities = (pred_samples / pred_samples.sum(-2, keepdim=True)).mean(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(1, 3, figsize = (15, 5))\n",
    "\n",
    "levels = np.linspace(0, 1.05, 20)\n",
    "for i in range(3):\n",
    "    im = ax[i].contourf(\n",
    "        test_x_mat.numpy(), test_y_mat.numpy(), probabilities[i].numpy().reshape((20,20)), levels=levels\n",
    "    )\n",
    "    fig.colorbar(im, ax=ax[i])\n",
    "    ax[i].set_title(\"Probabilities: Class \" + str(i), fontsize = 20)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Finally, we plot the decision boundary (on the right) and the true decision boundary on the left. They align pretty closely.\n",
    "\n",
    "To get the decision boundary from our model, all we need to do is to compute the elementwise maximium at each test point."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Estimated Response')"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(1,2, figsize=(10, 5))\n",
    "\n",
    "ax[0].contourf(test_x_mat.numpy(), test_y_mat.numpy(), test_labels.numpy())\n",
    "ax[0].set_title('True Response', fontsize=20)\n",
    "\n",
    "ax[1].contourf(test_x_mat.numpy(), test_y_mat.numpy(), pred_means.max(0)[1].reshape((20,20)))\n",
    "ax[1].set_title('Estimated Response', fontsize=20)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.7.4 64-bit ('base': conda)",
   "language": "python",
   "name": "python37464bitbaseconda52eab690427c4f7ea56588deee120c46"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
